﻿using Aker;
using Aker.DevTeam;
using System;
using System.Windows.Forms;

namespace Cikislar
{
    public static class Extension
    {
        public static void FixNulls(this AkerDB.CikisLinesRow cl)
        {
            if (!cl.IsElyafIdNull() && cl.ElyafId < 1)
                cl.SetElyafIdNull();

            if (!cl.IsIplikIdNull() && cl.IplikId < 1)
                cl.SetIplikIdNull();

            if (!cl.IsPOrderLinesIdNull() && cl.POrderLinesId < 1)
                cl.SetPOrderLinesIdNull();

            if (!cl.IsCikilanAdetNull() && (cl.CikilanAdet == 0 || cl.CikilanAdet < 0))
                cl.SetCikilanAdetNull();

            if (!cl.IsCikilanKGNull() && (cl.CikilanKG == 0 || cl.CikilanKG < 0))
                cl.SetCikilanKGNull();

            if (!cl.IsCikilanMetreNull() && (cl.CikilanMetre == 0 || cl.CikilanMetre < 0))
                cl.SetCikilanMetreNull();

            if (!cl.IsIrsaliyeAciklamaNull() && cl.IrsaliyeAciklama.Trim() == "")
                cl.SetIrsaliyeAciklamaNull();
        }
    }
    public class Cikis
    {
        public static AkerDB.CikisLinesDataTable Tampon = new AkerDB.CikisLinesDataTable();
        public static AkerDB.CikisEmriLinesDataTable CikisEmri = new AkerDB.CikisEmriLinesDataTable();

        public static void TamponaEkle(AkerDB.CikisLinesRow cl)
        {
            cl.FixNulls();
            Tampon.AddCikisLinesRow(cl);
        }

        public static void CikisEmrineEkle(AkerDB.CikisEmriLinesRow ce)
        {
            CikisEmri.AddCikisEmriLinesRow(ce);
        }

        public static DialogResult Cik(Aker.AkerDB.CikisLinesDataTable lines, int yontemId, int cariId = -1)
        {
            YeniCikis yeni = new YeniCikis(cariId);

            if (yeni.ShowDialog() == DialogResult.OK)
            {
                AkerDB.CikisRow cikis = Data.DB.Cikis.NewCikisRow();

                Data.DB.Cikis.Rows.Add(cikis);

                cikis.CikisYontemiId = yontemId;

                cikis.CikilacakTarih = yeni.CikisTarihi;
                cikis.CikisTipiId = yeni.CikisTipiId;
                if (cikis.CikisTipiId == 3) //işletmeye çıkış
                    cikis.IrsaliyeNo = "*";
                cikis.OlusturulmaTarihi = DateTime.Now;
                cikis.KullaniciId = AppSession.UserInfo.UserId;

                if (yeni.Aciklama != "")
                    cikis.Aciklama = yeni.Aciklama;

                if (yeni.CariId.ToIntNN() > 0)
                    cikis.CariId = yeni.CariId;

                if (yeni.DepoId.ToIntNN() > 0)
                    cikis.DepoId = yeni.DepoId;

                Data.TAM.CikisTableAdapter.Update(cikis);

                if (yontemId == 5)
                {
                    foreach (AkerDB.CikisEmriLinesRow ce in CikisEmri)
                        ce.CikisId = cikis.CikisId;

                    Data.TAM.CikisEmriLinesTableAdapter.Update(CikisEmri);

                    CikisEmri.Clear();
                }
                else
                {
                    foreach (AkerDB.CikisLinesRow cl in lines)
                        cl.CikisId = cikis.CikisId;

                    Data.TAM.CikisLinesTableAdapter.Update(lines);

                    lines.Clear();
                }
            }

            return yeni.DialogResult;
        }

        //public static AkerDB.CikisRow Cik(bool CikisEmriBekleniyor)
        //{
        //    YeniCikis yeni = new YeniCikis();
        //    if (yeni.ShowDialog() == DialogResult.OK)
        //    {
        //        AkerDB.CikisRow cikis = Data.DB.Cikis.NewCikisRow();

        //        Data.DB.Cikis.Rows.Add(cikis);

        //        cikis.CikilacakTarih = yeni.CikisTarihi;
        //        cikis.CikisTipiId = yeni.CikisTipiId;
        //        cikis.OlusturulmaTarihi = DateTime.Now;
        //        cikis.KullaniciId = AppSession.UserInfo.UserId;

        //        if (yeni.Aciklama != "")
        //            cikis.Aciklama = yeni.Aciklama;

        //        if (yeni.CariId.ToIntNN() > 0)
        //            cikis.CariId = yeni.CariId;

        //        if (yeni.DepoId.ToIntNN() > 0)
        //            cikis.DepoId = yeni.DepoId;

        //        cikis.CikisEmriBekleniyor = CikisEmriBekleniyor;
        //        Data.TAM.CikisTableAdapter.Update(cikis);

        //        return cikis;
        //    }
        //    else
        //        return null;
        //}
        public static AkerDB.CikisLinesRow YeniTamponSatiri()
        {
            return Tampon.NewCikisLinesRow();
        }

        public static AkerDB.CikisEmriLinesRow YeniCikisEmriSatiri()
        {
            return CikisEmri.NewCikisEmriLinesRow();
        }


        public static DialogResult TamponuCik(int yontemId, int cariId = -1)
        {
            return Cik(Tampon, yontemId, cariId);
        }

        public static DialogResult CikisEmriOlustur(int yontemId, int cariId = -1)
        {
            return Cik(Tampon, yontemId, cariId);
        }

        public static void TamponuTemizle()
        {
            Tampon.Clear();
            Tampon.AcceptChanges();
        }

        public static void CikisEmriTemizle()
        {
            CikisEmri.Clear();
            CikisEmri.AcceptChanges();
        }
    }
}